#include <iostream>
using namespace std;

#define MAX_N 100000
char s[MAX_N + 5];
int node[MAX_N + 5][10];
// 每个节点包含有几个号码
int val[MAX_N + 5];
// 记录当前节点的子节点数量
int child[MAX_N + 5];
// 节点数量
int cnt = 1;
// 根节点序号
int root = 1;

int insert(const char *s) {
    int p = 1, sum = 0;
    for (int i = 0; s[i]; i++) {
        int ind = s[i] - '0';
        if (node[p][ind] == 0) {
            node[p][ind] = ++cnt;
            child[p] += 1;
        }
        p = node[p][ind];
        sum += val[p];
    }
    val[p] += 1;
    // 判断其他号码不是我的前缀, 并且我不是其他号码的前缀(如果子节点不存在)
    return !(sum == 0 && child[p] == 0); 
}

int main() {
    int n, flag = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%s", s);
        flag += insert(s);
    }
    printf("%s\n", flag ? "NO" : "YES");
    return 0;
}